package com.nomi.blog.service;

import com.nomi.blog.entity.Article;
import com.nomi.blog.entity.DTO.ArticleSearchDTO;
import com.nomi.blog.utils.Result;

public interface ArticleService {
    // 创建文章
    Result createArticle(Article article);
    // 更新文章
    Result updateArticle(Article article);
    // 发布文章
    Result publishArticle(Long articleId);
    // 保存草稿
    Result saveDraft(Article article);
    // 搜索文章(分页)
    Result searchArticles(ArticleSearchDTO searchDTO, Integer pageNum, Integer pageSize);
    // 搜索文章
    Result searchArticlesWithoutPage(ArticleSearchDTO searchDTO);
    // 审核文章
    Result reviewArticle(Long articleId, String status);

    // 最新文章查看接口
    Result getLatestArticles(Integer pageNum, Integer pageSize);
    Result getLatestArticlesWithoutPage();

    // 最热标签查看接口
    Result getHotTags(Integer pageNum, Integer pageSize);
    Result getHotTagsWithoutPage();

    // 最热文章查看接口
    Result getHotArticles(Integer pageNum, Integer pageSize);
    Result getHotArticlesWithoutPage();

    // 文章归档类型查看接口
    Result getArticleArchives(Integer pageNum, Integer pageSize);
    Result getArticleArchivesWithoutPage();

    // 根据标签查看文章接口
    Result getArticlesByTag(String tag, Integer pageNum, Integer pageSize);
    Result getArticlesByTagWithoutPage(String tag);

    // 根据归档类型查看文章接口
    Result getArticlesByArchiveType(String archiveType, Integer pageNum, Integer pageSize);
    Result getArticlesByArchiveTypeWithoutPage(String archiveType);

    // 获取所有标签
    Result getAllTags();

    // 获取时间归档
    Result getTimeArchives();

    // 查询用户发布的文章
    Result getArticlesByUserId(Long userId, Integer pageNum, Integer pageSize);


    // 获取文章详情
    Result getArticleDetail(Long articleId);

    // 增加文章阅读量
    Result increaseArticleViewCount(Long articleId);

    // 根据用户ID和状态获取文章列表
    Result getArticlesByStatus(Long userId, String status);
}

